/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package core.threads.server;
import core.threads.server.Server_Public_MsgBox.CaraNb_Config;
import java.util.ArrayList;
import java.util.List;
import models.*;

/**
 *  存储所有游戏中的公共静态变量
 * @author Invince
 */
public class Server_Public_Data {//???????????加入所有武将列表，方便选武将的时候做随机处理
/*----------Attributs-------------------*/
    /**----共享变量------------**/
        /***---新建游戏时用----***/
        /**
         * 选择武将时用的所有武将列表，选出一个会在该列表里删掉一个,区别DataBase里的武将
         */
        public static List<Role> listRoleForSelection;//????注意加入所有武将
        public static final Object semaListRoleForSelection=new Object();
        /**
         * 建游戏时用，表示有多少个玩家已经选了武将
         */
        public static int nbRoleChoosen=0;
        public static final Object semaNbRoleChoosen=new Object();

        /**
         * 临时角色配置，表示几个忠臣，几个反贼
         */
        public static CaraNb_Config tempCaraNbConfig;
        public static final Object semaTempCaraNbConfig=new Object();
        /**
         * 临时玩家列表，在建游戏之前存连接的玩家信息
         */
        public static ListPlayer tempListPlayer=new ListPlayer(0);//这里无需特别定义id，id会在生成game时自动赋值
        public static final Object semaTempListPlayer=new Object();
        /**
         * 新建游戏时用，表示下一个加入的Player该拥有的id
         */
        public static int idNextAddPlayer=1;
        public static final Object semaIdNextAddPlayer=new Object();
        public static boolean isGameBegin=false;
        public static final Object semaIsGameBegin=new Object();

        /***-------游戏时---------------***/
        /**
         *  游戏
         * */
        public static Game game=new Game();
        public static final Object semaGame=new Object();
        
        /**
         * 是否是主机
         */
         public static boolean amIServer=false;
           
    /**---列表---**/
    /**
     * 根据玩家总数，提供相应的角色个数配置（这个方法的实现在T_Server_Cara_Config的refreshScreen_NbCaraConfig里实现）
     */
    public static List<CaraNb_Config> caraNb_Config_Selections=new ArrayList<CaraNb_Config>();
    public static final Object semaCaraNb_Config_Selections=new Object();
    
/*----------Public functions------------*/      
/*----------Private functions-----------*/
/*----------Constructor-----------------*/
/*----------Gets and sets---------------*/

}
